<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>

    // Promise的拓展方法 [[Prototype]] -> Promise.prototype  -> 所有Promise对象(实例化对象) 均可以访问
    // catch()  是 then(null,rejectCallback)或then(undefined,rejectCallback)的别名，用于指定发生错误时的回调函数。
    // 返回值: 新的Promise实例

    // 等价于
    // Promise.prototype.catch = function (rejectCallback) {
    //     // this -> 调用此方法的实例化对象(Promise对象)
    //     return this.then(null, rejectCallback)
    // }



    // 如何将Promise对象变为已失败?
    // 1. 借助官方给定方法 reject()
    // 2. new Promise()中自带错误捕获机制,如果代码在执行过程中出现错误 -> 将会被捕获 -> 将Promise实例变为rejected,并将错误的信息作为Promise对象的数据存储  (注意: 只能捕获同步代码中的错误)

    // aaaa;  //报错 -> aaaa is not defined -> 后续代码不执行

    var p = new Promise(function (resolve, reject) {
        // reject(1);

        aaaa; // 报错 -> aaaa is not defined  -> 被捕获   

    })

    console.log(p);

    // 只是指定Promise实例变为rejected(已失败)状态时执行的回调函数,(捕获错误错误之后处理错误)
    // p.then(null, function (err) {
    //     console.log("rejected", err);
    // })

    // 用于指定发生错误时的回调函数。
    p.catch(function (err) {
        console.log("rejected", err);
    })



</script>

</html>